﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using negocios;
using objetos;
using publico;
using System.Data;
using System.Transactions;

namespace softsales.pagina.ordem_servico
{



    public partial class ordem_servico_editar : System.Web.UI.Page
    {
        // ORDEM SERVICO
        OBJ_TB_ORDEM_SERVICO o_tb_ordem_servico = new OBJ_TB_ORDEM_SERVICO();
        BLL_TB_ORDEM_SERVICO b_tb_ordem_servico = new BLL_TB_ORDEM_SERVICO();

        // ORDEM SERVICO ITEM
        OBJ_TB_ORDEM_SERVICO_ITEM o_tb_ordem_servico_item = new OBJ_TB_ORDEM_SERVICO_ITEM();
        BLL_TB_ORDEM_SERVICO_ITEM b_tb_ordem_servico_item = new BLL_TB_ORDEM_SERVICO_ITEM();

        // ORDEM SERVICO HISTORICO
        OBJ_TB_ORDEM_SERVICO_HISTORICO o_tb_ordem_servico_historico = new OBJ_TB_ORDEM_SERVICO_HISTORICO();
        BLL_TB_ORDEM_SERVICO_HISTORICO b_tb_ordem_servico_historico = new BLL_TB_ORDEM_SERVICO_HISTORICO();


        OBJ_TB_TIPO_ORDEM_SERVICO o_tb_tipo_ordem_servico = new OBJ_TB_TIPO_ORDEM_SERVICO();
        BLL_TB_TIPO_ORDEM_SERVICO b_tb_tipo_ordem_servico = new BLL_TB_TIPO_ORDEM_SERVICO();
      

        // EMPRESA
        OBJ_TB_EMPRESA o_tb_empresa = new OBJ_TB_EMPRESA();
        BLL_TB_EMPRESA b_tb_empresa = new BLL_TB_EMPRESA();   

        BLL_TB_TIPO_SITUACAO_ORDEM_SERVICO b_tb_tipo_situacao_ordem_servico = new BLL_TB_TIPO_SITUACAO_ORDEM_SERVICO();

        BLL_TB_FORMA_PAGAMENTO b_tb_forma_pagamento = new BLL_TB_FORMA_PAGAMENTO();
        OBJ_TB_FORMA_PAGAMENTO o_tb_forma_pagamento = new OBJ_TB_FORMA_PAGAMENTO();


        // CONDICAO PAGAMENTO
        OBJ_TB_CONDICAO_PAGAMENTO o_tb_condicao_pagamento = new OBJ_TB_CONDICAO_PAGAMENTO();
        BLL_TB_CONDICAO_PAGAMENTO b_tb_condicao_pagamento = new BLL_TB_CONDICAO_PAGAMENTO();

        // CONDICAO PAGAMENTO PRAZO
        OBJ_TB_CONDICAO_PAGAMENTO_PRAZO o_tb_condicao_pagamento_prazo = new OBJ_TB_CONDICAO_PAGAMENTO_PRAZO();
        BLL_TB_CONDICAO_PAGAMENTO_PRAZO b_tb_condicao_pagamento_prazo = new BLL_TB_CONDICAO_PAGAMENTO_PRAZO(); 


        // PRODUTO 
        BLL_TB_PRODUTO b_tb_produto = new BLL_TB_PRODUTO();
        OBJ_TB_PRODUTO o_tb_produto = new OBJ_TB_PRODUTO();

        // CADASTRO
        OBJ_TB_CADASTRO o_tb_cadastro = new OBJ_TB_CADASTRO();
        BLL_TB_CADASTRO b_tb_cadastro = new BLL_TB_CADASTRO();  

 

        // LOG ERRO
        BLL_TB_LOG_ERRO b_tb_log_erro = new BLL_TB_LOG_ERRO();

        private int id_operacao { get; set; }
        protected void Page_Load(object sender, EventArgs e)
        {

            if (PUB_SESSAO.Logado())
            {

                if (Request["id_operacao"] != null)
                {
                    id_operacao = Convert.ToInt32(PUB_FUNCOES.TrataInteiro(Request["id_operacao"].ToString()));

                }

                if (!IsPostBack)
                {

                    // PREENCHE DROPDOWNLIST

                    b_tb_forma_pagamento.PreencheControle(DDL_ID_FORMA_PAGAMENTO, true);
                    b_tb_condicao_pagamento.PreencheControleWeb(DDL_ID_CONDICAO_PAGAMENTO, true);
                    b_tb_empresa.PreencheControleWeb(DDL_ID_EMPRESA, true);
                    b_tb_tipo_situacao_ordem_servico.PreencheControle(DDL_ID_SITUACAO_ORDEM_SERVICO, true);
                    b_tb_tipo_ordem_servico.PreencheControle(DDL_ID_TIPO_ORDEM_SERVICO, true);        

                    // INICIALIZA CAMPO DT EMISSAO COM A DATA ATUAL
                    TXT_DT_EMISSAO.Text = DateTime.Now.ToShortDateString();

                    // INCLUI O TITULO NA PAGINA
                    LBL_TITULO_PAGINA.Text = "Editar Ordem Serviço";


                    // INICIALIZA TEXTBOX COM VALORES INICIAIS
                    TXT_QTD.Text = "1";
                    TXT_VALOR_UNITARIO.Text = "0,00";

                    TXT_VALOR_DESCONTO.Text = "0,00";
                    TXT_VALOR_OUTRO.Text = "0,00";

                    TXT_VALOR_TOTAL_DESCONTO.Text = "0,00";
                    TXT_VALOR_TOTAL_DESCONTO.ReadOnly = true;

                    TXT_VALOR_TOTAL_ITEM.Text = "0,00";
                    TXT_VALOR_TOTAL_ITEM.ReadOnly = true;

                    TXT_VALOR_TOTAL_ORDEM_SERVICO.Text = "0,00";
                    TXT_VALOR_TOTAL_ORDEM_SERVICO.ReadOnly = true;

                    TXT_VALOR_TOTAL_OUTRO.Text = "0,00";
                    TXT_VALOR_TOTAL_OUTRO.ReadOnly = true;

                    TXT_VALOR_TOTAL_PRODUTO.Text = "0,00";
                    TXT_VALOR_TOTAL_PRODUTO.ReadOnly = true;
 

                    TXT_VALOR_TOTAL_SERVICO.Text = "0,00";
                    TXT_VALOR_TOTAL_SERVICO.ReadOnly = true;

                    // PAINEL INICIAL DE ITEM OCULTO

                    int aberto = (int)PUB_ENUM.TIPO_SITUACAO_ORDEM_SERVICO.ABERTO;
                    DDL_ID_SITUACAO_ORDEM_SERVICO.SelectedValue = aberto.ToString();
                    DDL_ID_SITUACAO_ORDEM_SERVICO.Enabled = false;


                    TXT_VALOR_DESCONTO.Enabled = false;
                    TXT_VALOR_OUTRO.Enabled = false;
                    TXT_VALOR_TOTAL_ITEM.Enabled = false;
                    TXT_VALOR_UNITARIO.Enabled = false;

                    if (Request["id"] != null)
                    {
                        if (PUB_FUNCOES.ApenasInteiro(Request["id"].ToString()))
                        {
                            Editar(Request["id"].ToString());
                        }
                    }


                }
                else
                {
                    if (Session["id_produto"] != null)
                    {                        

                        int id_produto = Convert.ToInt32(Session["id_produto"].ToString());
                        o_tb_produto = b_tb_produto.SelecionarObjetoPorId(id_produto);

                        TXT_ID_PRODUTO_SERVICO.Text = o_tb_produto.id.ToString();
                        TXT_DESCRICAO.Text = o_tb_produto.descricao.ToString();
                        TXT_QTD.Text = "1";                                             
                        TXT_VALOR_UNITARIO.Text = PUB_FUNCOES.FormataNumerico(o_tb_produto.valor_venda.ToString());
                        TXT_VALOR_TOTAL_ITEM.Text = PUB_FUNCOES.FormataNumerico(o_tb_produto.valor_venda.ToString());                                             

                        TXT_QTD.Enabled = true;
                        TXT_VALOR_UNITARIO.Enabled = true;
                        TXT_VALOR_DESCONTO.Enabled = true;
                        TXT_VALOR_OUTRO.Enabled = true;
                        TXT_VALOR_TOTAL_ITEM.Enabled = true;
                        Session.Remove("id_produto");
                    }
         
                }
            }

        }
      
        private void Editar(string id)
        {
            try
            {
                o_tb_ordem_servico = b_tb_ordem_servico.SelecionarObjetoPorId(Convert.ToInt32(id));

                HF_ID.Value = o_tb_ordem_servico.id.ToString();

                TituloPagina();

                if (o_tb_ordem_servico != null)
                {
                    o_tb_empresa = b_tb_empresa.SelecionarObjetoPorId(o_tb_ordem_servico.id_empresa);
                    o_tb_cadastro = b_tb_cadastro.SelecionarObjetoPorId(o_tb_ordem_servico.id_cadastro);
                }

                TXT_NUM_OS.Text = o_tb_ordem_servico.id.ToString();
                DDL_ID_EMPRESA.SelectedValue = o_tb_ordem_servico.id_empresa.ToString();                             
                TXT_ID_OS_GARANTIA.Text = o_tb_ordem_servico.id_os_garantia.ToString();
                DDL_ID_TIPO_ORDEM_SERVICO.SelectedValue = o_tb_ordem_servico.id_tipo_ordem_servico.ToString();
                DDL_ID_SITUACAO_ORDEM_SERVICO.SelectedValue = o_tb_ordem_servico.id_situacao_ordem_servico.ToString();
                TXT_DT_EMISSAO.Text = PUB_FUNCOES.FormataDataBR(o_tb_ordem_servico.dt_emissao.ToString());
                TXT_DT_ENTRADA.Text = PUB_FUNCOES.FormataDataBR(o_tb_ordem_servico.dt_entrada.ToString());
                TXT_DT_ENTREGA.Text = PUB_FUNCOES.FormataDataBR(o_tb_ordem_servico.dt_entrega.ToString());
                TXT_DT_APROVACAO.Text = PUB_FUNCOES.FormataDataBR(o_tb_ordem_servico.dt_aprovacao.ToString());
                TXT_DT_GARANTIA.Text = PUB_FUNCOES.FormataDataBR(o_tb_ordem_servico.dt_garantia.ToString());
                TXT_DT_FECHAMENTO.Text = PUB_FUNCOES.FormataDataBR(o_tb_ordem_servico.dt_fechamento.ToString());
                TXT_PLACA.Text = o_tb_ordem_servico.veiculo_placa.ToString();
                TXT_KM.Text = o_tb_ordem_servico.veiculo_km.ToString();
                DDL_ID_FORMA_PAGAMENTO.SelectedValue = o_tb_ordem_servico.id_forma_pagamento.ToString();
                DDL_ID_CONDICAO_PAGAMENTO.SelectedValue = o_tb_ordem_servico.id_condicao_pagamento.ToString();                

                // CLIENTE
                TXT_ID_CLI_FOR.Text = o_tb_ordem_servico.id_cadastro.ToString();
                TXT_NOME_CLI_FOR.Text = o_tb_cadastro.nome.ToString();                            
                TXT_DESC_SERVICO.Text = o_tb_ordem_servico.desc_servico.ToString();


                // VALORES TOTAIS
                TXT_VALOR_TOTAL_DESCONTO.Text = PUB_FUNCOES.FormataNumerico(o_tb_ordem_servico.valor_total_desconto.ToString());
                TXT_VALOR_TOTAL_ORDEM_SERVICO.Text = PUB_FUNCOES.FormataNumerico(o_tb_ordem_servico.valor_total_ordem_servico.ToString());
                TXT_VALOR_TOTAL_OUTRO.Text = PUB_FUNCOES.FormataNumerico(o_tb_ordem_servico.valor_total_outro.ToString());
                TXT_VALOR_TOTAL_PRODUTO.Text = PUB_FUNCOES.FormataNumerico(o_tb_ordem_servico.valor_total_produto.ToString());
                TXT_VALOR_TOTAL_SERVICO.Text = PUB_FUNCOES.FormataNumerico(o_tb_ordem_servico.valor_total_servico.ToString());                

                // PREENCHE ITEM
                PreencheOrdemServicoItem();

                // DESABILITA O CONTROLE
                DesabilitaControle();

                

            }
            catch (Exception)
            {

                throw;
            }


        }

        private void TituloPagina()
        {

            LBL_TITULO_PAGINA.Text = string.Format("Ordem Serviço Nº {0}", HF_ID.Value);
        }

        private void DesabilitaControle()
        {

            DDL_ID_SITUACAO_ORDEM_SERVICO.Enabled = false;
            DDL_ID_EMPRESA.Enabled = false;
            DDL_ID_TIPO_ORDEM_SERVICO.Enabled = false;
            TXT_NUM_OS.Enabled = false;
       
            TXT_DESCRICAO.Enabled = false;
            TXT_DT_EMISSAO.Enabled = false;
            TXT_DT_FECHAMENTO.Enabled = false;                        
            TXT_ID_CLI_FOR.Enabled = false;
            TXT_NOME_CLI_FOR.Enabled = false;            
         
            TXT_VALOR_TOTAL_ORDEM_SERVICO.Enabled = false;
            TXT_VALOR_TOTAL_OUTRO.Enabled = false;
            TXT_VALOR_TOTAL_PRODUTO.Enabled = false;
            TXT_VALOR_TOTAL_SERVICO.Enabled = false;

        }

      
        protected void BTN_SALVAR_Click(object sender, EventArgs e)
        {

            try
            {
                string msg = string.Empty;
                if (b_tb_ordem_servico_item.ExisteItem(Convert.ToInt32(HF_ID.Value)))
                {
                    using (TransactionScope scope = new TransactionScope())
                    {
                        AlterarOrdemServico();
                        IncluirOrdemServicoHistorico(string.Format("Login {0} alterou a ordem de serviço", PUB_SESSAO.Login));
                        msg = "Ordem de Serviço Nº " + HF_ID.Value + " foi alterada com sucesso";
                        Master.MSG_ALERTA(msg, string.Format("ordem_servico_visualizar.aspx?id={0}&id_operacao={1}", HF_ID.Value, id_operacao), false);

                        scope.Complete();
                    }
                }


            }
            catch (Exception ex)
            {
                b_tb_log_erro.IncluirLogErro(ex);
                Master.MSG_ALERTA("Erro ao tentar salvar a ordem de serviço.");
            }
        }


        private void LimparItem()
        {
            TXT_ID_PRODUTO_SERVICO.Text = string.Empty;
            TXT_VALOR_UNITARIO.Text = "0,00";
            TXT_VALOR_DESCONTO.Text = "0,00";
            TXT_VALOR_OUTRO.Text = "0,00";
            TXT_VALOR_TOTAL_ITEM.Text = "0,00";   
            TXT_DESCRICAO.Text = string.Empty;
            TXT_QTD.Text = "1";


        }


        private void TotalOrdemServico()
        {
            o_tb_ordem_servico = b_tb_ordem_servico.SelecionarObjetoPorId(Convert.ToInt32(HF_ID.Value));

            TXT_VALOR_TOTAL_DESCONTO.Text = PUB_FUNCOES.FormataNumerico(o_tb_ordem_servico.valor_total_desconto.ToString());
            TXT_VALOR_TOTAL_ORDEM_SERVICO.Text = PUB_FUNCOES.FormataNumerico(o_tb_ordem_servico.valor_total_ordem_servico.ToString());
            TXT_VALOR_TOTAL_OUTRO.Text = PUB_FUNCOES.FormataNumerico(o_tb_ordem_servico.valor_total_outro.ToString());
            TXT_VALOR_TOTAL_PRODUTO.Text = PUB_FUNCOES.FormataNumerico(o_tb_ordem_servico.valor_total_produto.ToString());
            TXT_VALOR_TOTAL_SERVICO.Text = PUB_FUNCOES.FormataNumerico(o_tb_ordem_servico.valor_total_servico.ToString());            
        }

        private void AlterarOrdemServico()
        {
            try
            {
                o_tb_ordem_servico.id = Convert.ToInt32(HF_ID.Value);
                o_tb_ordem_servico.id_empresa = Convert.ToInt32(DDL_ID_EMPRESA.SelectedValue);
                o_tb_ordem_servico.id_cadastro = Convert.ToInt32(TXT_ID_CLI_FOR.Text);
                o_tb_ordem_servico.id_orcamento = null;
                o_tb_ordem_servico.id_nfs = null;
                if (TXT_DT_EMISSAO.Text != string.Empty)
                    o_tb_ordem_servico.dt_emissao = Convert.ToDateTime(TXT_DT_EMISSAO.Text);
                if (TXT_DT_ENTRADA.Text != string.Empty)
                    o_tb_ordem_servico.dt_entrada = Convert.ToDateTime(PUB_FUNCOES.TrataData(TXT_DT_ENTRADA.Text));
                if (TXT_DT_ENTREGA.Text != string.Empty)
                    o_tb_ordem_servico.dt_entrega = Convert.ToDateTime(PUB_FUNCOES.TrataData(TXT_DT_ENTREGA.Text));
                if (TXT_DT_APROVACAO.Text != string.Empty)
                    o_tb_ordem_servico.dt_aprovacao = Convert.ToDateTime(PUB_FUNCOES.TrataData(TXT_DT_APROVACAO.Text));
                if (TXT_DT_FECHAMENTO.Text != string.Empty)
                    o_tb_ordem_servico.dt_fechamento = Convert.ToDateTime(PUB_FUNCOES.TrataData(TXT_DT_FECHAMENTO.Text));

                if (TXT_DT_GARANTIA.Text != string.Empty)
                    o_tb_ordem_servico.dt_garantia = Convert.ToDateTime(PUB_FUNCOES.TrataData(TXT_DT_GARANTIA.Text));

                if (TXT_ID_OS_GARANTIA.Text != string.Empty)
                    o_tb_ordem_servico.id_os_garantia = Convert.ToInt32(PUB_FUNCOES.TrataInteiro(TXT_ID_OS_GARANTIA.Text));

                if (TXT_PLACA.Text != string.Empty)
                    o_tb_ordem_servico.veiculo_placa = TXT_PLACA.Text;

                if (TXT_KM.Text != string.Empty)
                    o_tb_ordem_servico.veiculo_km = TXT_KM.Text;


                o_tb_ordem_servico.id_forma_pagamento = Convert.ToInt32(DDL_ID_FORMA_PAGAMENTO.SelectedValue);
                o_tb_ordem_servico.id_condicao_pagamento = Convert.ToInt32(DDL_ID_CONDICAO_PAGAMENTO.SelectedValue);
                o_tb_ordem_servico.id_usuario = PUB_SESSAO.Id;
                o_tb_ordem_servico.id_tipo_ordem_servico = Convert.ToInt32(DDL_ID_TIPO_ORDEM_SERVICO.SelectedValue);
                o_tb_ordem_servico.id_situacao_ordem_servico = Convert.ToInt32(DDL_ID_SITUACAO_ORDEM_SERVICO.SelectedValue);
                o_tb_ordem_servico.desc_servico = TXT_DESC_SERVICO.Text.Trim();
                o_tb_ordem_servico.valor_total_servico = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_SERVICO.Text));
                o_tb_ordem_servico.valor_total_produto = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_PRODUTO.Text));
                o_tb_ordem_servico.valor_total_desconto = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_DESCONTO.Text));
                o_tb_ordem_servico.valor_total_outro = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_OUTRO.Text));
                o_tb_ordem_servico.valor_total_ordem_servico = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_ORDEM_SERVICO.Text));
                o_tb_ordem_servico.id_usuario_checkin = null;
                o_tb_ordem_servico.dt_checkin = null;

                b_tb_ordem_servico.Alterar(o_tb_ordem_servico);
            }
            catch (Exception)
            {
                
                throw;
            }
            

        }


        protected void BTN_CANCELAR_Click(object sender, EventArgs e)
        {
            Response.Redirect("default.aspx", false);
        }

        private void IncluirOrdemServicoItem()
        {

            decimal vlr_unitario = 0;
            decimal vlr_desconto = 0;
            decimal vlr_outro = 0;
            decimal vlr_total_item = 0;
            decimal vlr_qtd = 0;
            try
            {
                o_tb_produto = b_tb_produto.SelecionarObjetoPorId(Convert.ToInt32(TXT_ID_PRODUTO_SERVICO.Text));

                if (TXT_QTD.Text != string.Empty)
                    vlr_qtd = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_QTD.Text));

                if (TXT_VALOR_TOTAL_ITEM.Text != string.Empty)
                    vlr_unitario = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_ITEM.Text));

                if (TXT_VALOR_OUTRO.Text != string.Empty)
                    vlr_outro = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_OUTRO.Text));

                if (TXT_VALOR_DESCONTO.Text != string.Empty)
                    vlr_desconto = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_DESCONTO.Text));

                vlr_total_item = (vlr_unitario * vlr_qtd) + vlr_outro - vlr_desconto;


                // ORDEM SERVICO ITEM
                o_tb_ordem_servico_item.id_ordem_servico = Convert.ToInt32(HF_ID.Value);
                o_tb_ordem_servico_item.id_produto_servico = o_tb_produto.id;
                o_tb_ordem_servico_item.id_tipo_item = Convert.ToInt32(o_tb_produto.id_tipo_item);
                o_tb_ordem_servico_item.ean = o_tb_produto.ean;
                o_tb_ordem_servico_item.descricao = TXT_DESCRICAO.Text;
                o_tb_ordem_servico_item.id_unidade_medida = o_tb_produto.id_unidade_medida;
                o_tb_ordem_servico_item.qtd = vlr_qtd;
                o_tb_ordem_servico_item.valor_unitario = vlr_unitario;
                o_tb_ordem_servico_item.valor_desconto = vlr_desconto;
                o_tb_ordem_servico_item.valor_outro = vlr_outro;
                o_tb_ordem_servico_item.valor_total = vlr_total_item;

                b_tb_ordem_servico_item.Incluir(o_tb_ordem_servico_item);


            }
            catch (Exception)
            {

                throw;
            }



        }

        protected void BTN_INCLUIR_ITEM_Click(object sender, EventArgs e)
        {
            try
            {

                

                if (TXT_ID_PRODUTO_SERVICO.Text != string.Empty && TXT_VALOR_UNITARIO.Text != string.Empty && TXT_VALOR_TOTAL_ITEM.Text != string.Empty && TXT_QTD.Text != string.Empty  && DDL_ID_CONDICAO_PAGAMENTO.SelectedValue != string.Empty)
                {

                    using (TransactionScope scope = new TransactionScope())
                    {
                        IncluirOrdemServicoItem();
                        PreencheOrdemServicoItem();
                        TotalOrdemServico();
                        IncluirOrdemServicoHistorico(string.Format("Login {0} incluiu o item {1}",PUB_SESSAO.Id, TXT_DESCRICAO.Text));
                        PNL_ORDEM_SERVICO_ITEM.Visible = true;

                        TXT_ID_PRODUTO_SERVICO.Text = string.Empty;
                        TXT_DESCRICAO.Text = string.Empty;
                        TXT_VALOR_UNITARIO.Text = "0,00";
                        TXT_VALOR_OUTRO.Text = "0,00";
                        TXT_VALOR_DESCONTO.Text = "0,00";
                        TXT_VALOR_TOTAL_ITEM.Text = "0,00";
                        TXT_QTD.Text = "1";

                        scope.Complete();
                    }

                 
                }

            }
            catch (Exception)
            {
                
                throw;
            }


        }

        private void PreencheOrdemServicoItem()
        {

            GRV_TB_ORDEM_SERVICO_ITEM.DataSource = b_tb_ordem_servico_item.Selecionar(string.Format("tb_ordem_servico_item.id_ordem_servico={0}",HF_ID.Value),"");
            GRV_TB_ORDEM_SERVICO_ITEM.DataBind();
        }

        private void IncluirOrdemServicoHistorico(string historico)
        {

            o_tb_ordem_servico_historico.desc_ordem_servico_historico = historico;
            o_tb_ordem_servico_historico.dt_atualizacao = DateTime.Now;
            o_tb_ordem_servico_historico.id_ordem_servico = Convert.ToInt32(HF_ID.Value);
            o_tb_ordem_servico_historico.id_usuario = PUB_SESSAO.Id;
            b_tb_ordem_servico_historico.Incluir(o_tb_ordem_servico_historico);

        }
        

        protected void IMG_BTN_EXCLUIR_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                ImageButton btn = (ImageButton)sender;

                int id_ordem_servico = Convert.ToInt32(HF_ID.Value);
                int id_ordem_servico_item = 0;
                if (btn != null)
                {
                    using (TransactionScope scope = new TransactionScope())
                    {
                        id_ordem_servico_item = Convert.ToInt32(btn.CommandArgument);

                        o_tb_ordem_servico_item = b_tb_ordem_servico_item.SelecionarObjetoPorId(id_ordem_servico_item);
                        b_tb_ordem_servico_item.Excluir(o_tb_ordem_servico_item);

                        PreencheOrdemServicoItem();
                        IncluirOrdemServicoHistorico(string.Format("Login {0} excluiu o item {1}",PUB_SESSAO.Id,o_tb_ordem_servico_item.descricao.ToString()));
                        TotalOrdemServico();
                       
                        
                    }


                
                }
            }
            catch (Exception)
            {

                throw;
            }
        }

        protected void GRV_TB_ORDEM_SERVICO_ITEM_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {

        }

        protected void GRV_TB_ORDEM_SERVICO_ITEM_Sorting(object sender, GridViewSortEventArgs e)
        {

        }

   

      
        protected void DDL_ID_FORMA_PAGAMENTO_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (DDL_ID_FORMA_PAGAMENTO.SelectedValue != string.Empty)
            {
                b_tb_condicao_pagamento.PreencheControleWeb(DDL_ID_CONDICAO_PAGAMENTO, string.Format("tb_condicao_pagamento.id_forma_pagamento = {0}", DDL_ID_FORMA_PAGAMENTO.SelectedValue), "", false);
            }
            else
            {
                DDL_ID_CONDICAO_PAGAMENTO.SelectedValue = string.Empty;
            }
        }
      
    
    }
}